Microprocessors are being designed into an increasing number of products every day. During the development of these microprocessor based products, the software controlling the microprocessor must be loaded into the product and debugged. Very often, the product being developed includes neither a parallel nor serial device suitable for communicating with a host computer. Communication with the host computer is necessary to download the microprocessor program into the product and to also debug both the product's hardware and software. Almost all microprocessor based systems (except those systems that have all the memory on the same chip as the microprocessor) do include ROM (Read Only Memory) and/or SRAM (Static Random Access Memory) devices.
Every one of the products that include a microprocessor must also include software for the microprocessor. Usually the software is developed in a host computer such as for example, a Digital Equipment VAX minicomputer or an IMB PC and transferred to the microprocessor based target product for testing. The number of software transfers that must take place during the development of a product can be in the tens of thousands.
Typically, for example, Motorola S Records, Intel Hex Records and transfer formats devised by other manufacturers are used to transfer the software from the host computer to the microprocessor based product. All of those popular transfer formats involve converting the data into characters that can be transmitted over a standard RS-232 Serial line. The characters are then converted back into their original form in a receiver at the other end of the line. Such transfer techniques are used almost universally because RS-232 serial ports (the ports by which most terminals talk to computers) are found on almost all computers.
RS-232 based transfer utilities have one major drawback. These utilities are very slow. Using the Motorola S Records utility and a 9600 Baud RS-232 serial line, data can be transferred at the rate of 300 bytes per second. At that rate a 100,000 byte program would take about 51/2 minutes to transfer. If such a program had to be loaded 10,000 times during the development of a product, over 900 hours would have been spent waiting for data transfers to complete.